home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / SYS / s / Renumber.wrx < prev    next >
Text File  |  1996-09-26  |  3KB  |  135 lines

  1. /*
  2.  * REXX-Script für WRITE 3.592 © 1994 by Tim Teulings
  3.  *
  4.  * Dieses Script wird aus WRITE heraus gestartet.
  5.  * Es dient dazu lange Spalten von Zahlen umzunummerrieren.
  6.  * Man startet dieses Script mit dem Cursor auf der Zahl von der man aus
  7.  * umnummerieren möchte.
  8.  * WRITE nummeriert dann in 1er Schritten aufwärts, bis er keine Zahl mehr
  9.  * findet.
  10.  * Er beachtet dabei die aktuelle Formatierung.
  11.  */
  12.  
  13. IF ~show('P',"WRITE")
  14. THEN DO
  15.   say "Dieses Script ist zutzlos ohne WRITE !"
  16.   EXIT
  17. END
  18.  
  19. ADDRESS WRITE
  20.  
  21. OPTIONS RESULTS
  22.  
  23. 'VERSIONCHECK 3848 "Renumber.wrx"'
  24. IF RC~=0 THEN DO
  25.   exit 10
  26. END
  27.  
  28. 'GETVAR "_CurrentID"'
  29. ID = RESULT
  30. IF ID=0 THEN DO
  31.   'MESSAGEOK "REXX-Script\n'Renumber.wrx' :\n\nSie müssen dieses Script\naus WRITE heraus starten !"'
  32.   EXIT
  33. END
  34.  
  35. OPENPORT ID           /* PrivatePort des aktuellen Fensters öffnen        */
  36. Port = RESULT
  37.  
  38. IF Port="" THEN DO    /* 'OPENPORT' gibt "" zurück, wenn Port nicht       */
  39.                       /* geöffnet werden konnte                           */
  40.  
  41.   LOCKWINDOW ID
  42. END
  43. ELSE DO
  44.   INTERPRET ADDRESS Port  /* PrivatePort addressieren.Alle Komandos beziehen */
  45.                           /* sich nun auf das Fenster mit diesem Port        */
  46. END
  47.  
  48. 'GETVAR "_WordDef"'     /* Wortdefinition 1 */
  49. OldWordDef = RESULT
  50. 'SETVAR "_WordDef" 1'
  51.  
  52. 'GETVAR "_CurrentWord"' /* Aktuelles Wort holen */
  53. Word = RESULT
  54.  
  55. IF ~DATATYPE(Word,'Numeric') THEN DO
  56.   'MESSAGEOK "REXX-Script Renumber.wrx :\n\nDer Cursor muß auf\neiner Zahl stehen !"'
  57.   Quit()
  58. END
  59.  
  60. SILENT                  /* Zwecks Geschwindigkeit in den Silent-Mode */
  61.                         /* schalten                                  */
  62.  
  63. 'GETVAR "_xPos"'        /* Cursorposition holen */
  64. OldPos.x = RESULT
  65. 'GETVAR "_yPos"'
  66. OldPos.y = RESULT
  67.  
  68. 'GETVAR "_CurrentChar"' /* Aktuelles Zeichen holen */
  69. Char = RESULT
  70.  
  71. DO WHILE DATATYPE(Char,'Numeric') /* Rechten Rand der Zahl suchen */
  72.   CURSORRIGHT 0
  73.   'GETVAR "_CurrentChar"'
  74.   Char = RESULT
  75. END
  76. CURSORLEFT 0
  77.  
  78. 'GETVAR "_xPos"'        /* Wieder aktuelle Cursorposition holen */
  79. StartPos.x = RESULT
  80. 'GETVAR "_yPos"'
  81. StartPos.y = RESULT
  82.  
  83. MaxLen = 0
  84. Lines  = 0
  85. 'GETVAR "_CurrentWord"'
  86. Word = RESULT
  87. DO WHILE DATATYPE(Word,'Numeric')
  88.   Lines = Lines + 1
  89.   Len = Length(Word)
  90.   IF Len>MaxLen THEN DO
  91.     MaxLen = Len
  92.   END
  93.   CURSORDOWN 0
  94.   'GETVAR "_CurrentWord"'
  95.   Word = RESULT
  96. END
  97.  
  98. GOTO StartPos.x StartPos.y
  99. 'GETVAR "_CurrentWord"'
  100. Count = RESULT + 1
  101.  
  102. DO r = 1 TO Lines-1
  103.   CURSORDOWN 0
  104.  
  105.   GOTO StartPos.x-MaxLen+1 _yPos
  106.  
  107.   DO q = 1 TO MaxLen
  108.     DELETE
  109.   END
  110.  
  111.   ZahlLen = Length(Count)
  112.   GOTO StartPos.x-MaxLen+1 _yPos
  113.   DO q = 1 TO MaxLen-ZahlLen
  114.     'WRITETEXT " "'
  115.   END
  116.   WRITETEXT "(" || Count || ")"
  117.   Count = Count + 1
  118. END
  119.  
  120. GOTO OldPos.x OldPos.y
  121.  
  122. Quit()
  123.  
  124. Quit:
  125.  
  126. 'SETVAR "_WordDef"' OldWordDef /* Alten Wert setzen       */
  127. WINDOW 0 0 0 0                 /* Silent-Mode ausschalten */
  128. IF Port="" THEN DO
  129.   LOCKWINDOW 0
  130. END
  131. ELSE DO
  132.   CLOSEPORT ID
  133. END
  134. EXIT
  135.